	//The names of the tiles
	public static final String[] tileNames = 
	{
		"road_curve",
		"road_straight",
		"road_three",
		"road_four",
		"cloister_road",
		"cloister",
		"city_bit",
		"city_twobit",
		"city_straight",
		"city_corner",
		"city_twobitcorner",
		"city_gate",
		"city_gate_road",
		"city_corner_road",
		"city_bit_road",
		"city_bit_road_curve1",
		"city_bit_road_curve2",
		"city_bit_road_three",
		"city",
	};
	//The number of the tiles. i.e, tile distribution
	public static final HashMap<String, Integer> tileDistribution = new HashMap<String, Integer>() 
	{
		{
			put("road_curve", new Integer(9));
			put("road_straight", new Integer(8));
			put("road_three", new Integer(4));
			put("road_four", new Integer(1));
			put("cloister_road", new Integer(2));
			put("cloister", new Integer(4));
			put("city_bit", new Integer(5));
			put("city_twobit", new Integer(3));
			put("city_straight", new Integer(2));
			put("city_corner", new Integer(5));
			put("city_twobitcorner", new Integer(2));
			put("city_gate", new Integer(4));
			put("city_gate_road", new Integer(3));
			put("city_corner_road", new Integer(5));
			put("city_bit_road", new Integer(3));
			put("city_bit_road_curve1", new Integer(3));
			put("city_bit_road_curve2", new Integer(3));
			put("city_bit_road_three", new Integer(3));
			put("city", new Integer(1));
		};
	};

    static public void fillTileData(Tile t)
    {    
        String name = t.tile;
    	if (name=="road_curve")
		{
			t.edges[0] = new int[3];
			t.edges[0][0] = Tile.FARM;
			t.edges[0][1] = Tile.ROAD;
			t.edges[0][2] = Tile.FARM;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 2;
			f0.connectedTo[2] = new int[1];
			f0.connectedTo[2][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.ROAD);
			f1.connectedTo[0] = new int[1];
			f1.connectedTo[0][0] = 1;
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 1;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[0] = new int[1];
			f2.connectedTo[0][0] = 2;
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 0;
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,15,32);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.THIEF,f1,30,20);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,39,9);
			t.meeple_locations.add(m2);
		}
		else if (name=="road_straight")
		{
			t.edges[0] = new int[3];
			t.edges[0][0] = Tile.FARM;
			t.edges[0][1] = Tile.ROAD;
			t.edges[0][2] = Tile.FARM;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[2] = new int[1];
			f0.connectedTo[2][0] = 2;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.ROAD);
			f1.connectedTo[0] = new int[1];
			f1.connectedTo[0][0] = 1;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 1;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[0] = new int[1];
			f2.connectedTo[0][0] = 2;
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 0;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,10,24);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.THIEF,f1,24,24);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,24);
			t.meeple_locations.add(m2);
		}
		else if (name=="road_three")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.FARM;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[3];
			t.edges[3][0] = Tile.FARM;
			t.edges[3][1] = Tile.ROAD;
			t.edges[3][2] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 2;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.ROAD);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 1;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 2;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 1;
			t.features.add(f3);
			Tile.Feature f4 = new Tile.Feature(t,Tile.FARM);
			f4.connectedTo[2] = new int[1];
			f4.connectedTo[2][0] = 2;
			f4.connectedTo[3] = new int[1];
			f4.connectedTo[3][0] = 0;
			t.features.add(f4);
			Tile.Feature f5 = new Tile.Feature(t,Tile.ROAD);
			f5.connectedTo[3] = new int[1];
			f5.connectedTo[3][0] = 1;
			t.features.add(f5);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,24,8);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,38);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f4,10,38);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.THIEF,f1,38,24);
			t.meeple_locations.add(m3);
			Tile.MeepleLocation m4 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,24,38);
			t.meeple_locations.add(m4);
			Tile.MeepleLocation m5 = new Tile.MeepleLocation(t,Meeple.THIEF,f5,10,24);
			t.meeple_locations.add(m5);
		}
		else if (name=="road_four")
		{
			t.edges[0] = new int[3];
			t.edges[0][0] = Tile.FARM;
			t.edges[0][1] = Tile.ROAD;
			t.edges[0][2] = Tile.FARM;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[3];
			t.edges[3][0] = Tile.FARM;
			t.edges[3][1] = Tile.ROAD;
			t.edges[3][2] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 2;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.ROAD);
			f1.connectedTo[0] = new int[1];
			f1.connectedTo[0][0] = 1;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[0] = new int[1];
			f2.connectedTo[0][0] = 2;
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[1] = new int[1];
			f3.connectedTo[1][0] = 1;
			t.features.add(f3);
			Tile.Feature f4 = new Tile.Feature(t,Tile.FARM);
			f4.connectedTo[1] = new int[1];
			f4.connectedTo[1][0] = 2;
			f4.connectedTo[2] = new int[1];
			f4.connectedTo[2][0] = 0;
			t.features.add(f4);
			Tile.Feature f5 = new Tile.Feature(t,Tile.ROAD);
			f5.connectedTo[2] = new int[1];
			f5.connectedTo[2][0] = 1;
			t.features.add(f5);
			Tile.Feature f6 = new Tile.Feature(t,Tile.FARM);
			f6.connectedTo[2] = new int[1];
			f6.connectedTo[2][0] = 2;
			f6.connectedTo[3] = new int[1];
			f6.connectedTo[3][0] = 0;
			t.features.add(f6);
			Tile.Feature f7 = new Tile.Feature(t,Tile.ROAD);
			f7.connectedTo[3] = new int[1];
			f7.connectedTo[3][0] = 1;
			t.features.add(f7);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,10,10);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,10);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f4,38,38);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f6,10,38);
			t.meeple_locations.add(m3);
			Tile.MeepleLocation m4 = new Tile.MeepleLocation(t,Meeple.THIEF,f1,24,10);
			t.meeple_locations.add(m4);
			Tile.MeepleLocation m5 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,38,24);
			t.meeple_locations.add(m5);
			Tile.MeepleLocation m6 = new Tile.MeepleLocation(t,Meeple.THIEF,f5,24,38);
			t.meeple_locations.add(m6);
			Tile.MeepleLocation m7 = new Tile.MeepleLocation(t,Meeple.THIEF,f7,10,24);
			t.meeple_locations.add(m7);
		}
		else if (name=="cloister_road")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.FARM;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[2] = new int[2];
			f0.connectedTo[2][0] = 0;
			f0.connectedTo[2][1] = 2;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.ROAD);
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 1;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.CLOISTER);
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.MONK,f2,20,32);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,36,16);
			t.meeple_locations.add(m1);
		}
		else if (name=="cloister")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.FARM;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.FARM);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[2] = new int[1];
			f0.connectedTo[2][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.CLOISTER);
			t.features.add(f1);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.MONK,f1,20,32);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f0,36,16);
			t.meeple_locations.add(m1);
		}
		else if (name=="city_bit")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 0;
			t.features.add(f1);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,30);
			t.meeple_locations.add(m1);
		}
		else if (name=="city_twobit")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.CITY;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 0;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.CITY);
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,30);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f2,24,42);
			t.meeple_locations.add(m2);
		}
		else if (name=="city_straight")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.FARM;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.CITY;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[0] = new int[1];
			f1.connectedTo[0][0] = 0;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,30);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,24,42);
			t.meeple_locations.add(m2);
		}
		else if (name=="city_corner")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			t.features.add(f1);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,14,14);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,34,34);
			t.meeple_locations.add(m1);
		}
		else if (name=="city_twobitcorner")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.CITY);
			f2.connectedTo[3] = new int[1];
			f2.connectedTo[3][0] = 0;
			t.features.add(f2);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,24);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f2,6,24);
			t.meeple_locations.add(m2);
		}
		else if (name=="city_gate")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.CITY;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			t.features.add(f1);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,24);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,42);
			t.meeple_locations.add(m1);
		}
		else if (name=="city_gate_road")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.CITY;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.ROAD);
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 1;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.FARM);
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 2;
			t.features.add(f3);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,24);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,35,42);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,13,43);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.THIEF,f2,24,42);
			t.meeple_locations.add(m3);
		}
		else if (name=="city_corner_road")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 2;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 2;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[1] = new int[1];
			f3.connectedTo[1][0] = 1;
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 1;
			t.features.add(f3);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,14,14);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,42,14);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,30,30);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,38);
			t.meeple_locations.add(m3);
		}
		else if (name=="city_bit_road")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.FARM;
			t.edges[3] = new int[3];
			t.edges[3][0] = Tile.FARM;
			t.edges[3][1] = Tile.ROAD;
			t.edges[3][2] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 2;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 2;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			f2.connectedTo[3] = new int[1];
			f2.connectedTo[3][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[1] = new int[1];
			f3.connectedTo[1][0] = 1;
			f3.connectedTo[3] = new int[1];
			f3.connectedTo[3][0] = 1;
			t.features.add(f3);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,24,16);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,24,24);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,24,38);
			t.meeple_locations.add(m3);
		}
		else if (name=="city_bit_road_curve1")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 2;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 0;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 2;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[1] = new int[1];
			f3.connectedTo[1][0] = 1;
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 1;
			t.features.add(f3);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,14,24);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,30,30);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,38);
			t.meeple_locations.add(m3);
		}
		else if (name=="city_bit_road_curve2")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[3];
			t.edges[3][0] = Tile.FARM;
			t.edges[3][1] = Tile.ROAD;
			t.edges[3][2] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[2] = new int[1];
			f1.connectedTo[2][0] = 0;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 2;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 2;
			f2.connectedTo[3] = new int[1];
			f2.connectedTo[3][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.ROAD);
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 1;
			f3.connectedTo[3] = new int[1];
			f3.connectedTo[3][0] = 1;
			t.features.add(f3);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,34,24);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.THIEF,f3,20,30);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,8,38);
			t.meeple_locations.add(m3);
		}
		else if (name=="city_bit_road_three")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[3];
			t.edges[1][0] = Tile.FARM;
			t.edges[1][1] = Tile.ROAD;
			t.edges[1][2] = Tile.FARM;
			t.edges[2] = new int[3];
			t.edges[2][0] = Tile.FARM;
			t.edges[2][1] = Tile.ROAD;
			t.edges[2][2] = Tile.FARM;
			t.edges[3] = new int[3];
			t.edges[3][0] = Tile.FARM;
			t.edges[3][1] = Tile.ROAD;
			t.edges[3][2] = Tile.FARM;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			t.features.add(f0);
			Tile.Feature f1 = new Tile.Feature(t,Tile.FARM);
			f1.connectedTo[1] = new int[1];
			f1.connectedTo[1][0] = 0;
			f1.connectedTo[3] = new int[1];
			f1.connectedTo[3][0] = 2;
			t.features.add(f1);
			Tile.Feature f2 = new Tile.Feature(t,Tile.FARM);
			f2.connectedTo[1] = new int[1];
			f2.connectedTo[1][0] = 2;
			f2.connectedTo[2] = new int[1];
			f2.connectedTo[2][0] = 0;
			t.features.add(f2);
			Tile.Feature f3 = new Tile.Feature(t,Tile.FARM);
			f3.connectedTo[2] = new int[1];
			f3.connectedTo[2][0] = 2;
			f3.connectedTo[3] = new int[1];
			f3.connectedTo[3][0] = 0;
			t.features.add(f3);
			Tile.Feature f4 = new Tile.Feature(t,Tile.ROAD);
			f4.connectedTo[1] = new int[1];
			f4.connectedTo[1][0] = 1;
			t.features.add(f4);
			Tile.Feature f5 = new Tile.Feature(t,Tile.ROAD);
			f5.connectedTo[2] = new int[1];
			f5.connectedTo[2][0] = 1;
			t.features.add(f5);
			Tile.Feature f6 = new Tile.Feature(t,Tile.ROAD);
			f6.connectedTo[3] = new int[1];
			f6.connectedTo[3][0] = 1;
			t.features.add(f6);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,6);
			t.meeple_locations.add(m0);
			Tile.MeepleLocation m1 = new Tile.MeepleLocation(t,Meeple.FARMER,f1,42,16);
			t.meeple_locations.add(m1);
			Tile.MeepleLocation m2 = new Tile.MeepleLocation(t,Meeple.FARMER,f2,38,38);
			t.meeple_locations.add(m2);
			Tile.MeepleLocation m3 = new Tile.MeepleLocation(t,Meeple.FARMER,f3,10,38);
			t.meeple_locations.add(m3);
			Tile.MeepleLocation m4 = new Tile.MeepleLocation(t,Meeple.THIEF,f4,38,24);
			t.meeple_locations.add(m4);
			Tile.MeepleLocation m5 = new Tile.MeepleLocation(t,Meeple.THIEF,f5,24,38);
			t.meeple_locations.add(m5);
			Tile.MeepleLocation m6 = new Tile.MeepleLocation(t,Meeple.THIEF,f6,10,24);
			t.meeple_locations.add(m6);
		}
		else if (name=="city")
		{
			t.edges[0] = new int[1];
			t.edges[0][0] = Tile.CITY;
			t.edges[1] = new int[1];
			t.edges[1][0] = Tile.CITY;
			t.edges[2] = new int[1];
			t.edges[2][0] = Tile.CITY;
			t.edges[3] = new int[1];
			t.edges[3][0] = Tile.CITY;
			Tile.Feature f0 = new Tile.Feature(t,Tile.CITY);
			f0.connectedTo[0] = new int[1];
			f0.connectedTo[0][0] = 0;
			f0.connectedTo[1] = new int[1];
			f0.connectedTo[1][0] = 0;
			f0.connectedTo[2] = new int[1];
			f0.connectedTo[2][0] = 0;
			f0.connectedTo[3] = new int[1];
			f0.connectedTo[3][0] = 0;
			t.features.add(f0);
			Tile.MeepleLocation m0 = new Tile.MeepleLocation(t,Meeple.KNIGHT,f0,24,24);
			t.meeple_locations.add(m0);
		}

	}